﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using SDT.Model;
using SDT.Site.ViewModels;

namespace SDT.Site.Controllers
{
    public class FengshuiController : Controller
    {
        //
        // GET: /Fengshui/
        public FengshuiViewModel pt = new FengshuiViewModel();
        public ActionResult Index()
        {
            //tinh can

            return View();
        }
        [HttpPost]
        public ActionResult Index(FormCollection collection)
        {
            string xem = Request.Params["xem"];
            string NamDuongLich = Request.Params["NamDuongLich"];
            string GioiTinh = Request.Params["GioiTinh"];
            string HuongNha = Request.Params["HuongNha1"].Trim();
            int TongDuongLich = 0;
            if (!string.IsNullOrEmpty(xem))
            {
                byte[] byteNamDuongLich = NamDuongLich.ToCharArray().Select(c => byte.Parse(c.ToString())).ToArray();
                //tinh can chi                
                int SoCuoiNamDuongLich = int.Parse(byteNamDuongLich.ElementAtOrDefault(byteNamDuongLich.Count() - 1).ToString());
                string Can = pt.ListHangCan.Where(d => d.ID == SoCuoiNamDuongLich).FirstOrDefault().TenCan.ToString();
                int SoDuChi = int.Parse(NamDuongLich) % 12;
                string Chi = pt.ListHangChi.Where(d => d.ID == SoDuChi).FirstOrDefault().TenChi.ToString();
                string CanChi = Can + " " + Chi;
                //Tinh que menh
                string LoaiQueMenh = "";
                foreach (var item in byteNamDuongLich)
                {
                    TongDuongLich += item;
                }

                int SoQueMenh = TongDuongLich % 9;
                if (SoQueMenh == 0)
                {
                    foreach (var item in byteNamDuongLich)
                    {
                        if (item != 9)
                        {
                            SoQueMenh += item;
                        }
                    }
                }
                if (GioiTinh.Equals("Nam"))
                {
                    LoaiQueMenh = pt.ListQueMenh.Where(d => d.ID == SoQueMenh).FirstOrDefault().NamMenh;
                    if (LoaiQueMenh.ToLower().Equals("Trung(*)".ToLower()))
                    {
                        LoaiQueMenh = "Khôn (thổ)";
                    }
                }
                else if (GioiTinh.Equals("Nữ"))
                {
                    LoaiQueMenh = pt.ListQueMenh.Where(d => d.ID == SoQueMenh).FirstOrDefault().NuMenh;
                    if (LoaiQueMenh.ToLower().Equals("Trung(*)".ToLower()))
                    {
                        LoaiQueMenh = "Cấn(thổ)";
                    }
                }
                int ID = pt.ListAllHuong.Where(d => d.TenQueMenh.ToLower().Equals(LoaiQueMenh.ToLower())).FirstOrDefault().HuongID;
                string ThuocMenh = pt.ListHuongTot.Where(d => d.ID == ID).FirstOrDefault().TenHuong;
                string QueMenh_ThuocMenh = LoaiQueMenh + " thuộc " + ThuocMenh;
                //ngu hanh
                string NguHanh = pt.ListNguHanh.Where(d => d.TenCanChi.ToLower().Equals(CanChi.ToLower())).FirstOrDefault().TenNguHanh;
                //huong nha
                int IDHuongNha = pt.ListAllHuongQueMenh.Where(d => d.TenHuong.ToLower().Equals(HuongNha.ToLower())).FirstOrDefault().HuongID;
                string ThuocMenh_HuongNha = pt.ListKieuHuongNha.Where(d => d.ID == IDHuongNha).FirstOrDefault().TenHuong;
                //tim huong xau
                var ListHuong = pt.ListAllHuong.Where(d => d.TenQueMenh.ToLower().Equals(LoaiQueMenh.ToLower())).Select(d => d.HuongTot).FirstOrDefault().Split(',');
                var CheckHuong = ListHuong.Where(d => d.ToLower().Equals(HuongNha.ToLower()));
                string Huong = "";
                if (CheckHuong != null && CheckHuong.Count() > 0)
                {
                    Huong = "Hướng tốt";
                }
                else
                {
                    Huong = "Hướng xấu";
                }
                string HuongTot_ThuocMenh = "Hướng " + HuongNha + " (" + Huong + ") ,thuộc " + ThuocMenh_HuongNha;
                //hinh anh
                string images = pt.ListHinhAnh.Where(d => d.TenMenh.ToLower().Equals(LoaiQueMenh.ToLower())).FirstOrDefault().TenHinhAnh;
                //list huong tot
                int IDQueMenh = pt.ListHinhAnh.Where(d => d.TenMenh.ToLower().Equals(LoaiQueMenh.ToLower())).FirstOrDefault().ID;
                var dataHuongTot = pt.ListDetails.Where(d => d.MenhID == IDQueMenh && d.Status == 1).ToList();
                var dataHuongXau = pt.ListDetails.Where(d => d.MenhID == IDQueMenh && d.Status == 0).ToList();
                //bang abt quai mieu ta
                string batquai = pt.ListHinhAnh.Where(d => d.TenMenh.ToLower().Equals(LoaiQueMenh.ToLower())).FirstOrDefault().ShowTable;
                //list du lieu
                ViewData["TuoiDuong"] = NamDuongLich;
                ViewData["TuoiAm"] = CanChi;
                ViewData["QueMenh"] = QueMenh_ThuocMenh;
                ViewData["NguHanh"] = NguHanh;
                ViewData["HuongNha"] = HuongTot_ThuocMenh;
                ViewData["TenHinhAnh"] = images;
                ViewData["HuongTot"] = dataHuongTot;
                ViewData["HuongXau"] = dataHuongXau;
                ViewData["BangBatQuai"] = batquai;
                ViewData["GioiTinh"] = GioiTinh;
                ViewData["SelectedHuongNha"] = HuongNha;
                
            }
            return View();
        }
        public ActionResult Calculate()
        {
            return View();
        }

        //tim tuoi xay nha        
        public AgeViewModel age = new AgeViewModel();

        public ActionResult Viewold()
        {
            return View();
        }
        [HttpPost]
        public ActionResult Viewold(FormCollection collection)
        {

            string xem = Request.Params["xem1"];
            string NamDuongLich = Request.Params["NamDuongLich"];
            string NamXayNha = Request.Params["NamXayNha"];
            int demtamtai = 0;
            int dem = 0;


            if (!string.IsNullOrEmpty(xem))
            {
                byte[] byteNamDuongLich = NamDuongLich.ToCharArray().Select(c => byte.Parse(c.ToString())).ToArray();
                byte[] byteNamXayNha = NamXayNha.ToCharArray().Select(c => byte.Parse(c.ToString())).ToArray();
                //tinh can chi cua gia chu          
                int SoCuoiNamDuongLich = int.Parse(byteNamDuongLich.ElementAtOrDefault(byteNamDuongLich.Count() - 1).ToString());
                string Can = pt.ListHangCan.Where(d => d.ID == SoCuoiNamDuongLich).FirstOrDefault().TenCan.ToString();
                int SoDuChi = int.Parse(NamDuongLich) % 12;
                string Chi = pt.ListHangChi.Where(d => d.ID == SoDuChi).FirstOrDefault().TenChi.ToString();
                string CanChi = Can + " " + Chi;
                //tinh can chi cua nam xay nha
                int SoCuoiNamXayDung = int.Parse(byteNamXayNha.ElementAtOrDefault(byteNamDuongLich.Count() - 1).ToString());
                string CanXayNha = pt.ListHangCan.Where(d => d.ID == SoCuoiNamXayDung).FirstOrDefault().TenCan.ToString();
                int SoDuChiXayNha = int.Parse(NamXayNha) % 12;
                string ChiXayNha = pt.ListHangChi.Where(d => d.ID == SoDuChiXayNha).FirstOrDefault().TenChi.ToString();
                string CanChiXayNha = CanXayNha + " " + ChiXayNha;
                //xet tam tai
                string kieutamtai = "";
                string namtamtai = age.ListTamTai.Where(d => d.TuoiTamTai.ToLower().Contains(Chi.ToLower())).FirstOrDefault().NamTamTai;
                var checktamtai = age.ListTamTai.Where(d => d.TuoiTamTai.ToLower().Contains(Chi.ToLower()) && d.NamTamTai.ToLower().Contains(ChiXayNha.ToLower()));
                if (checktamtai != null && checktamtai.Count() > 0)
                {
                    kieutamtai = "phạm vào tam tai";
                    ViewData["PhamTamTai"] = kieutamtai;
                    demtamtai++;
                }
                else
                {
                    kieutamtai = "không phạm vào tam tai";
                    ViewData["PhamTamTai"] = kieutamtai;
                }
                //xet kim lau
                string kieukimlau = "";
                int tuoixet = int.Parse(NamXayNha) - int.Parse(NamDuongLich) + 1;
                var checkkimlau = age.KimLau.Where(d => d == tuoixet);
                if (checkkimlau != null && checkkimlau.Count() > 0)
                {
                    kieukimlau = "phạm vào kim lâu";
                    ViewData["PhamKimLau"] = kieukimlau;
                    dem++;
                }
                else
                {
                    kieukimlau = "không phạm vào kim lâu";
                    ViewData["PhamKimLau"] = kieukimlau;
                }
                //xet hoang oc
                string kieuhoangoc = "";
                var checkhoangoc = age.HoangOc.Where(d => d == tuoixet);
                if (checkhoangoc != null && checkhoangoc.Count() > 0)
                {
                    kieuhoangoc = "phạm vào hoàng ốc";
                    ViewData["PhamHoangOc"] = kieuhoangoc;
                    dem++;
                }
                else
                {
                    kieuhoangoc = "không phạm vào hoàng ốc";
                    ViewData["PhamHoangOc"] = kieuhoangoc;
                }
                //kiem tra
                string kiemtra = "";
                if (demtamtai > 0 && dem == 0)
                {
                    kiemtra = "có thể tiến hành";
                    ViewData["KiemTraTienHanh"] = kiemtra;
                }
                if (dem > 0)
                {
                    kiemtra = "không nên tiến hành";
                    ViewData["KiemTraTienHanh"] = kiemtra;
                    //xet nam co the tien hanh neu pham kim lau hoac hoang oc
                    var listKimLau = new List<int>();
                    var listHoangOc = new List<int>();
                    for (int i = tuoixet; i < 75; i++)
                    {
                        if (i > tuoixet && !age.KimLau.Contains(i))
                        {
                            listKimLau.Add(i);
                        }

                    }
                    for (int i = tuoixet; i < 75; i++)
                    {
                        if (i > tuoixet && !age.HoangOc.Contains(i))
                        {
                            listHoangOc.Add(i);
                        }
                    }
                    var data = listKimLau.Where(d => listHoangOc.Contains(d)).ToList();
                    int namluilai = int.Parse(NamDuongLich) + data.FirstOrDefault() - 1;
                    ViewData["NamLuiLai"] = namluilai;
                }
                //data
                ViewData["demtamtai"] = demtamtai;
                ViewData["dem"] = dem;
                ViewData["NamSinhDuongLich"] = NamDuongLich;
                ViewData["NamSinhAmLich"] = CanChi;
                ViewData["NamDuKienKhoiCong"] = NamXayNha;
                ViewData["GiaChuTuoi"] = CanChi;
                ViewData["NamTamTai"] = namtamtai;
                ViewData["DuKienXayNha"] = CanChiXayNha;
                ViewData["TuoiXet"] = tuoixet;                                            

            }

            return View();
        }
        //lay du lieu
        
    }
}
